
// pages/user/index.js
const { userAuth, todoManager } = require('../../utils/cloud')
const { toast, dialog, nav, errorHandler } = require('../../utils/uiHelper')

const app = getApp()

Page({
  data: {
    userInfo: null,
    isLogin: false,
    todoStats: {
      total: 0,
      completed: 0,
      pending: 0
    },
    isLoading: false
  },

  onLoad: function() {
    // 检查用户是否已登录
    this.checkLoginStatus()
  },

  onShow: function() {
    // 如果已登录，获取待办事项统计
    if (this.data.isLogin) {
      this.getTodoStats()
    }
  },

  onPullDownRefresh: async function() {
    await this.checkLoginStatus()
    if (this.data.isLogin) {
      await this.getTodoStats()
    }
    wx.stopPullDownRefresh()
  },

  // 检查登录状态
  async checkLoginStatus() {
    try {
      this.setData({ isLoading: true })
      
      // 从全局获取登录状态
      const isLogin = app.globalData.isLogin
      const userInfo = app.globalData.userInfo
      
      this.setData({
        isLogin,
        userInfo
      })
      
      // 如果已登录，获取待办事项统计
      if (isLogin) {
        await this.getTodoStats()
      }
    } catch (err) {
      console.error('检查登录状态失败：', err)
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 获取用户信息
  async getUserProfile() {
    try {
      this.setData({ isLoading: true })
      toast.loading('登录中...')
      
      // 调用全局登录方法
      const success = await app.login()
      
      if (success) {
        // 更新本地状态
        this.setData({
          userInfo: app.globalData.userInfo,
          isLogin: true
        })
        
        // 获取待办事项统计
        await this.getTodoStats()
      }
    } catch (err) {
      errorHandler.handle(err, '登录失败')
    } finally {
      this.setData({ isLoading: false })
      toast.hideLoading()
    }
  },

  // 获取待办事项统计
  async getTodoStats() {
    try {
      this.setData({ isLoading: true })
      
      // 获取全部待办事项
      const allResult = await todoManager.listTodos()
      
      if (allResult.code === 0) {
        const todos = allResult.data
        const completed = todos.filter(todo => todo.status).length
        const pending = todos.length - completed
        
        this.setData({
          todoStats: {
            total: todos.length,
            completed,
            pending
          }
        })
      } else {
        throw new Error(allResult.msg)
      }
    } catch (err) {
      console.error('获取待办事项统计失败：', err)
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 跳转到标签管理页面
  navigateToTags: function() {
    if (!app.checkLogin()) return
    nav.to('/pages/tags/index')
  },

  // 清除本地缓存
  async clearCache() {
    try {
      const confirmed = await dialog.confirm('确定要清除本地缓存吗？', '清除缓存')
      
      if (confirmed) {
        toast.loading('清除中...')
        
        await wx.clearStorageSync()
        
        toast.success('缓存已清除')
      }
    } catch (err) {
      errorHandler.handle(err, '清除缓存失败')
    } finally {
      toast.hideLoading()
    }
  },

  // 退出登录
  async logout() {
    try {
      const confirmed = await dialog.confirm('确定要退出登录吗？', '退出登录')
      
      if (confirmed) {
        toast.loading('退出中...')
        
        // 清除全局登录状态
        app.globalData.userInfo = null
        app.globalData.isLogin = false
        
        // 清除本地登录状态
        this.setData({
          isLogin: false,
          userInfo: null,
          todoStats: {
            total: 0,
            completed: 0,
            pending: 0
          }
        })
        
        toast.success('已退出登录')
      }
    } catch (err) {
      errorHandler.handle(err, '退出登录失败')
    } finally {
      toast.hideLoading()
    }
  },

  // 关于我们
  showAbout: function() {
    dialog.success('备忘录 v1.0.0\n一个简单易用的待办事项管理工具', '关于备忘录')
  }
})